package com.sofa.demo.server;

import com.alipay.sofa.registry.client.api.RegistryClientConfig;
import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;
import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;
import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;
import com.alipay.sofa.rpc.config.ProviderConfig;
import com.alipay.sofa.rpc.config.RegistryConfig;
import com.alipay.sofa.rpc.config.ServerConfig;
import com.sofa.demo.service.HelloService;


public class Server {
    public static void main(String[] args) {

//        // 构建客户端实例
//        RegistryClientConfig config = DefaultRegistryClientConfigBuilder.start().setRegistryEndpoint("127.0.0.1").setRegistryEndpointPort(9603).build();
//        DefaultRegistryClient registryClient = new DefaultRegistryClient(config);
//        registryClient.init();
//
//// 构造发布者注册表
//        String dataId = "com.alipay.test.demo.service:1.0@DEFAULT";
//        PublisherRegistration registration = new PublisherRegistration(dataId);
//
//// 将注册表注册进客户端并发布数据
//        registryClient.register(registration, "this is demo");








        // 1. 注册中心配置
        RegistryConfig registryConfig = new RegistryConfig()
                .setProtocol("sofa") // 设置协议
                .setAddress("127.0.0.1:9603") // 设置注册中心 session 地址
//                .setProtocol("zookeeper")
//                .setAddress("127.0.0.1:2181")
        ;



        // 2. 通信服务配置
        ServerConfig serverConfig = new ServerConfig()
                .setProtocol("bolt") // 设置一个协议，默认bolt
                .setPort(9696) // 设置一个端口，默认12200  9696
                .setDaemon(false); // 非守护线程

        // 3. provider 综合配置
        ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setRef(new HelloServiceImpl()) // 指定实现
//                .setRegistry(registryConfig) // 指定注册中心
                .setServer(serverConfig); // 指定服务端

        // 4. 进行服务暴露
        providerConfig.export(); // 发布服务



    }
}
